import request from '../utls/require'

// 定义请求和响应的类型
interface LoginData {
  username: string
  password: string
}

interface RegisterData {
  username: string
  password: string
  email?: string
}

// 移除未使用的接口定义，保持文件简洁

/**
 * 用户注册
 */
export const register = (data: RegisterData) => {
  console.log('[API] 调用用户注册接口', data)
  return request({
    url: '/xiangsu/register/',
    method: 'post',
    data
  }).then(response => {
    console.log('[API] 用户注册成功', response)
    return response
  }).catch(error => {
    console.error('[API] 用户注册失败', error)
    throw error
  })
}

/**
 * 用户登录
 */
export const login = (data: LoginData) => {
  console.log('[API] 调用用户登录接口', data)
  return request({
    url: '/xiangsu/login/',
    method: 'post',
    data
  }).then(response => {
    console.log('[API] 用户登录成功', response)
    return response
  }).catch(error => {
    console.error('[API] 用户登录失败', error)
    throw error
  })
}

/**
 * 用户登出
 */
export const logout = () => {
  console.log('[API] 调用用户登出接口')
  // 无论后端是否成功，先清除本地存储的token
  const logoutPromise = request({
    url: '/xiangsu/logout/',
    method: 'post'
  }).then(response => {
    console.log('[API] 用户登出成功', response)
    return response
  }).catch(error => {
    console.error('[API] 用户登出失败', error)
    // 即使失败也继续清除本地存储
  })
  
  // 清除本地存储的token和用户信息
  localStorage.removeItem('userToken')
  localStorage.removeItem('username')
  sessionStorage.removeItem('userToken')
  sessionStorage.removeItem('username')
  
  return logoutPromise
}

/**
 * 获取当前用户信息
 */
export const getCurrentUser = () => {
  console.log('[API] 调用获取当前用户信息接口')
  return request({
    url: '/xiangsu/current-user/',
    method: 'get'
  }).then(response => {
    console.log('[API] 获取当前用户信息成功', response)
    return response
  }).catch(error => {
    console.error('[API] 获取当前用户信息失败', error)
    throw error
  })
}